<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Aestate: aestate/work/repository.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aestate
   &#160;<span id="projectnumber">1.0.5</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_374ee6e3281d8312d956f1f155302869.html">aestate</a></li><li class="navelem"><a class="el" href="dir_5abfa80149f37441c1f61fb6211d8f7d.html">work</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">repository.py</div>  </div>
</div><!--header-->
<div class="contents">
<a href="repository_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="namespaceaestate_1_1work_1_1repository.html">    1</a></span>&#160;<span class="keyword">import</span> copy</div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160; </div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1work_1_1_modes.html">aestate.work.Modes</a> <span class="keyword">import</span> EX_MODEL</div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1work_1_1_serialize.html">aestate.work.Serialize</a> <span class="keyword">import</span> QuerySet</div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1exception.html">aestate.exception</a> <span class="keyword">import</span> FieldNotExist</div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1dbs.html">aestate.dbs</a> <span class="keyword">import</span> _mysql</div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1work_1_1sql.html">aestate.work.sql</a> <span class="keyword">import</span> ExecuteSql, ProxyOpera</div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1util_1_1_log.html">aestate.util.Log</a> <span class="keyword">import</span> ALog</div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160; </div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1work_1_1orm.html">aestate.work.orm</a> <span class="keyword">import</span> AOrm</div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160; </div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"># 每个任务唯一ID</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="keyword">import</span> uuid</div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160; </div>
<div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html">   16</a></span>&#160;<span class="keyword">class </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html">Repository</a>:</div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;    <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="stringliteral">    - POJO类</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="stringliteral">        - 继承该类表名此类为数据库的pojo类</span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="stringliteral">        - 需要配合:@Table(name, msg, **kwargs)使用</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="stringliteral">    &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad66c073ae1c84d39f2868e43c43bc189">   23</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad66c073ae1c84d39f2868e43c43bc189">__init__</a>(self, config_obj=None, instance=None, log_conf=None, close_log=False, serializer=QuerySet, **kwargs):</div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="stringliteral">        通过继承此类将数据表实体化</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="stringliteral">            实体化之后你可以使用像类似find_one()等操做</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="stringliteral">            可以调用conversion()方法将其转化为ORM框架常用的样式</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="stringliteral">            无需担心类型问题，无需担心datetime无法转换</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="stringliteral">        使用方法:</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="stringliteral">            #加入Table注解，并标注表名与描述，因考虑使用者后期优化问题，请务必填写MSG参数</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="stringliteral">            @Table(name=&quot;demo_table&quot;, msg=&quot;demo message&quot;)</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="stringliteral">            #继承Repository并得到相对应的半自动ORM操做</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="stringliteral">            class TestClass(Repository):</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="stringliteral">                # 初始化并super配置</span></div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="stringliteral">                def __init__(self,**kwargs):</span></div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="stringliteral">                    super(DemoTable, self).__init__(config_obj=ConF(), log_conf={</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="stringliteral">                        &#39;path&#39;: &quot;/log/&quot;,</span></div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="stringliteral">                        &#39;save_flag&#39;: True</span></div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="stringliteral">                    }, **kwargs)</span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="stringliteral">        初始化配置:</span></div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="stringliteral">            aestate.util.Config.config的配置类,详见:aestate.work.Config.MysqlConfig</span></div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="stringliteral">        Attributes:</span></div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="stringliteral">            以下的字段均可覆盖重写</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="stringliteral">            config_obj:数据源配置类</span></div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="stringliteral">            log_conf:日志配置工具</span></div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="stringliteral">            log_obj:日志对象</span></div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="stringliteral">            close_log:是否关闭日志</span></div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="stringliteral">            serializer:序列化使用的类,默认使用aestate.work.Serialize.QuerySet</span></div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="stringliteral">            instance:实例</span></div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="stringliteral">            __table_name__:表名称</span></div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="stringliteral">            operation:操作类的实现</span></div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="stringliteral">            fields:操作的字段</span></div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="stringliteral">            sqlFields:sql方言</span></div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="stringliteral">        :param config_obj:配置类</span></div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="stringliteral">        :param log_conf:日志配置类</span></div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="stringliteral">        :param close_log:是否关闭日志显示功能</span></div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="stringliteral">        :param serializer:自定义序列化器,默认使用aestate.work.Serialize.QuerySet</span></div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        <span class="comment"># 以下使用ParseUtil将所有参数替换为可动态修改</span></div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;        <span class="comment"># 有没有关闭日志</span></div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <span class="comment"># 数据源配置</span></div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        <span class="keywordflow">if</span> config_obj <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;            ALog.log_error(msg=<span class="stringliteral">&quot;缺少配置类`config_obj`&quot;</span>, obj=FieldNotExist, raise_exception=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad6ade0a364a6d26b9217c64afe2cf135">   83</a></span>&#160;        self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad6ade0a364a6d26b9217c64afe2cf135">ParseUtil</a> = config_obj</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        ParseUtil = self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad6ade0a364a6d26b9217c64afe2cf135">ParseUtil</a></div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        ParseUtil.set_field_compulsory(</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;            self, key=<span class="stringliteral">&#39;config_obj&#39;</span>, data=kwargs, val=config_obj)</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;        <span class="comment"># 抽象类</span></div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        ParseUtil.set_field_compulsory(</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;            obj=self, data=kwargs, key=<span class="stringliteral">&#39;abst&#39;</span>, val=<span class="keyword">False</span>)</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        <span class="comment"># 当本类为抽象类时，仅设置所需要的值</span></div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        ParseUtil.set_field_compulsory(</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;            self, key=<span class="stringliteral">&#39;close_log&#39;</span>, data=kwargs, val=close_log)</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <span class="comment"># 有没有表名</span></div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        ParseUtil.set_field_compulsory(self, key=<span class="stringliteral">&#39;__table_name__&#39;</span>, data=kwargs,</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;                                       val=self.__table_name__ <span class="keywordflow">if</span> hasattr(self, <span class="stringliteral">&#39;__table_name__&#39;</span>) <span class="keywordflow">else</span></div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;                                       <span class="stringliteral">&#39;&quot;__table_name__&quot; parsing failed&#39;</span>)</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        <span class="comment"># 参照对象</span></div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        <span class="comment"># 能操作数据库的，但是没有值</span></div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        ParseUtil.set_field_compulsory(</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;            self, key=<span class="stringliteral">&#39;instance&#39;</span>, data=kwargs, val=instance)</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;        <span class="comment"># 取得字段的名称</span></div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        ParseUtil.set_field_compulsory(</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;            self, key=<span class="stringliteral">&#39;fields&#39;</span>, data=kwargs, val=list(self.instance.getFields().keys()))</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        <span class="comment"># 获取sql方言配置</span></div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        ParseUtil.set_field_compulsory(</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;            self, key=<span class="stringliteral">&#39;sqlFields&#39;</span>, data=self.config_obj.__dict__, val=_mysql.Fields())</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;        <span class="comment"># 当当前类为抽象类时，为类取消初始化数据库配置</span></div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        <span class="comment"># 最后的执行结果</span></div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        ParseUtil.set_field_compulsory(</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;            self, key=<span class="stringliteral">&#39;result&#39;</span>, data=kwargs, val=<span class="keywordtype">None</span>)</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        ParseUtil.set_field_compulsory(self, key=<span class="stringliteral">&#39;log_obj&#39;</span>, data=kwargs,</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;                                       val=<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html">ALog</a>(**log_conf) <span class="keywordflow">if</span> log_conf <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span> <span class="keywordflow">else</span> <span class="keywordtype">None</span>)</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <span class="keywordflow">if</span> hasattr(self, <span class="stringliteral">&#39;close_log&#39;</span>) <span class="keywordflow">and</span> <span class="keywordflow">not</span> self.close_log <span class="keywordflow">and</span> <span class="keywordflow">not</span> self.abst <span class="keywordflow">and</span> <span class="keywordflow">not</span> self.__init_pojo__:</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;            ALog.log(obj=self, msg=<span class="stringliteral">&#39;Being Initialize this object&#39;</span>, LogObject=self.log_obj)</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        ParseUtil.set_field_compulsory(</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;            self, key=<span class="stringliteral">&#39;serializer&#39;</span>, data=kwargs, val=serializer)</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.abst:</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;            <span class="comment"># 操作类</span></div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;            ParseUtil.set_field_compulsory(</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;                self, key=<span class="stringliteral">&#39;operation&#39;</span>, data=kwargs, val=ProxyOpera.DbOperation())</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;            <span class="comment"># 连接池</span></div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;            <span class="keywordflow">if</span> hasattr(self, <span class="stringliteral">&#39;config_obj&#39;</span>) <span class="keywordflow">and</span> self.config_obj:</div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a4fe8925d2fe118234b92067560e96a2c">  123</a></span>&#160;                self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a4fe8925d2fe118234b92067560e96a2c">db_util</a> = ExecuteSql.Db_opera(</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;                    creator=ParseUtil.fieldExist(</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;                        self.config_obj, <span class="stringliteral">&#39;creator&#39;</span>, raise_exception=<span class="keyword">True</span>),</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;                    POOL=<span class="keywordtype">None</span> <span class="keywordflow">if</span> <span class="stringliteral">&#39;POOL&#39;</span> <span class="keywordflow">not</span> <span class="keywordflow">in</span> kwargs.keys(</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;                    ) <span class="keywordflow">else</span> kwargs[<span class="stringliteral">&#39;POOL&#39;</span>],</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;                    **ParseUtil.fieldExist(self.config_obj, <span class="stringliteral">&#39;kw&#39;</span>, raise_exception=<span class="keyword">True</span>))</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;            <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;                ALog.log_error(<span class="stringliteral">&#39;`config_obj` is missing&#39;</span>, AttributeError, LogObject=self.log_obj, raise_exception=<span class="keyword">True</span>)</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    @property</div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a23a9cc8dca79ab503ab2537c8d29e975">  133</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a23a9cc8dca79ab503ab2537c8d29e975">conversion</a>(self):</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="stringliteral">        将此Repository转换为ORM实体</span></div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="stringliteral">        Return:</span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="stringliteral">            ORM转换之后的实体对象</span></div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classaestate_1_1work_1_1orm_1_1_a_orm.html">AOrm</a>(repository=self)</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160; </div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a9a3ea0e3484460a8dc08a43f54e9a809">  142</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a9a3ea0e3484460a8dc08a43f54e9a809">first</a>(self):</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="stringliteral">        获取数据库中的第一个</span></div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a23a9cc8dca79ab503ab2537c8d29e975">conversion</a>.top().end()</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160; </div>
<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a7b0fadba8d270423923ecedb012565c9">  148</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a7b0fadba8d270423923ecedb012565c9">last</a>(self):</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="stringliteral">        获取最后一个参数</span></div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a23a9cc8dca79ab503ab2537c8d29e975">conversion</a>.top().desc().end()</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a3424c501b017a48c7ccfc1f31d8dee1d">  154</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a3424c501b017a48c7ccfc1f31d8dee1d">find_all</a>(self, **kwargs) -&gt; QuerySet:</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="stringliteral">        从当前数据表格中查找所有数据</span></div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="stringliteral">        Returns:</span></div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="stringliteral">            将所有结果封装成POJO对象集合并返回数据</span></div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        <span class="comment"># 开启任务</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">  162</a></span>&#160;        self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> = self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a8c81f4cc1f19e32a669a66adb72cc388">find_field</a>(*self.getFields(), **kwargs)</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a></div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160; </div>
<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a8c81f4cc1f19e32a669a66adb72cc388">  165</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a8c81f4cc1f19e32a669a66adb72cc388">find_field</a>(self, *args, **kwargs) -&gt; QuerySet:</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="stringliteral">        只查询指定名称的字段,如:</span></div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="stringliteral">            SELECT user_name FROM `user`</span></div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="stringliteral">            即可参与仅解析user_name为主的POJO对象</span></div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="stringliteral">        :param args:需要参与解析的字段名</span></div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;<span class="stringliteral">        :return:</span></div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;<span class="stringliteral">            将所有结果封装成POJO对象集合并返回数据</span></div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        <span class="comment"># 设置名称</span></div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        name = str(uuid.uuid1())</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <span class="comment"># 开启任务</span></div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;        kwargs.update(</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;            {</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;                <span class="stringliteral">&#39;func&#39;</span>: self.operation.__find_by_field__,</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                <span class="stringliteral">&#39;__task_uuid__&#39;</span>: name,</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;                <span class="stringliteral">&#39;t_local&#39;</span>: self</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;            }</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        )</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160; </div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        result = self.operation.<a class="code" href="namespaceaestate.html#a134bbbf29caacb0c7c996840cf7a0730">start</a>(*args, **kwargs)</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160; </div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> = self.serializer(instance=self.instance, base_data=result)</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a></div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160; </div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a9de20f0ad54da7c1b6ab8bc7e3f28ec2">  195</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a9de20f0ad54da7c1b6ab8bc7e3f28ec2">find_one</a>(self, sql, **kwargs):</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="stringliteral">        查找第一条数据</span></div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="stringliteral">            可以是一条</span></div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="stringliteral">            也可以是很多条中的第一条</span></div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="stringliteral">        code:</span></div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="stringliteral">            result = self.find_many(**kwargs)</span></div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="stringliteral">            if len(result) == 0:</span></div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="stringliteral">                return None</span></div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;<span class="stringliteral">            else:</span></div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="stringliteral">                return result[0]</span></div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="stringliteral">        :param kwargs:包含所有参数:</span></div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="stringliteral">            pojo:参照对象</span></div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="stringliteral">            sql:处理过并加上%s的sql语句</span></div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="stringliteral">            params:需要填充的字段</span></div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;<span class="stringliteral">            print_sql:是否打印sql语句</span></div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;<span class="stringliteral">        :return 返回使用find_many()的结果种第一条</span></div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        kwargs[<span class="stringliteral">&#39;sql&#39;</span>] = sql</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> = self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ac4957e544a6e7b5fce766d015395823c">find_many</a>(**kwargs)</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <span class="keywordflow">if</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> <span class="keywordflow">is</span> <span class="keywordtype">None</span> <span class="keywordflow">or</span> len(self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a>) == 0:</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;            self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> = []</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;            <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;            self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> = self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a>.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a9a3ea0e3484460a8dc08a43f54e9a809">first</a>()</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;            <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a></div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160; </div>
<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#ac4957e544a6e7b5fce766d015395823c">  232</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ac4957e544a6e7b5fce766d015395823c">find_many</a>(self, sql, **kwargs) -&gt; QuerySet:</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;<span class="stringliteral">        查询出多行数据</span></div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;<span class="stringliteral">            第一个必须放置sql语句</span></div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="stringliteral">        :param kwargs:包含所有参数:</span></div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;<span class="stringliteral">            pojo:参照对象</span></div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;<span class="stringliteral">            sql:处理过并加上%s的sql语句</span></div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;<span class="stringliteral">            params:需要填充的字段</span></div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;<span class="stringliteral">            print_sql:是否打印sql语句</span></div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;<span class="stringliteral">        :return 将所有数据封装成POJO对象并返回</span></div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;        <span class="comment"># 设置名称</span></div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        name = str(uuid.uuid1())</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        kwargs[<span class="stringliteral">&#39;sql&#39;</span>] = sql</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        <span class="comment"># 开启任务</span></div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;        kwargs[<span class="stringliteral">&#39;func&#39;</span>] = self.operation.__find_many__</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        kwargs[<span class="stringliteral">&#39;__task_uuid__&#39;</span>] = name</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;        kwargs[<span class="stringliteral">&#39;t_local&#39;</span>] = self</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        result = self.operation.<a class="code" href="namespaceaestate.html#a134bbbf29caacb0c7c996840cf7a0730">start</a>(**kwargs)</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> = self.serializer(instance=self.instance, base_data=result)</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a></div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160; </div>
<div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a0087bc5f425b10dddd4f8a27f98bd6dc">  263</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a0087bc5f425b10dddd4f8a27f98bd6dc">find_sql</a>(self, sql, **kwargs) -&gt; QuerySet:</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;<span class="stringliteral">        返回多个数据并用list包装:</span></div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="stringliteral">            - 可自动化操作</span></div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;<span class="stringliteral">            - 请尽量使用find_many(sql)操作</span></div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;<span class="stringliteral">        :param kwargs:包含所有参数:</span></div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;<span class="stringliteral">            sql:处理过并加上%s的sql语句</span></div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="stringliteral">            params:需要填充的字段</span></div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="stringliteral">            print_sql:是否打印sql语句</span></div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;        <span class="comment"># kwargs[&#39;conf_obj&#39;] = t_local.config_obj</span></div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;        <span class="comment"># 设置名称</span></div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;        name = str(uuid.uuid1())</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        kwargs[<span class="stringliteral">&#39;sql&#39;</span>] = sql</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        <span class="comment"># 开启任务</span></div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        kwargs[<span class="stringliteral">&#39;func&#39;</span>] = self.operation.__find_sql__</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;        kwargs[<span class="stringliteral">&#39;__task_uuid__&#39;</span>] = name</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;        kwargs[<span class="stringliteral">&#39;t_local&#39;</span>] = self</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        result = self.operation.<a class="code" href="namespaceaestate.html#a134bbbf29caacb0c7c996840cf7a0730">start</a>(**kwargs)</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160; </div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;        self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> = self.serializer(instance=self.instance, base_data=result)</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a></div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160; </div>
<div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a6451c2ce3e3119f33943bd802aa738a4">  290</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a6451c2ce3e3119f33943bd802aa738a4">update</a>(self, key=None):</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;<span class="stringliteral">        执行更新操作:</span></div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;<span class="stringliteral">            返回受影响行数</span></div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;<span class="stringliteral">        :param key:主键，where的参考数据</span></div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;<span class="stringliteral">        :return:</span></div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        <span class="keywordflow">if</span> key <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;            <span class="keywordflow">for</span> k, v <span class="keywordflow">in</span> self._fields.items():</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;                <span class="keywordflow">if</span> hasattr(v, <span class="stringliteral">&quot;primary_key&quot;</span>) <span class="keywordflow">and</span> getattr(v, <span class="stringliteral">&#39;primary_key&#39;</span>):</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;                    key = k</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;                    <span class="keywordflow">break</span></div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;        name = str(uuid.uuid1())</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;        kwargs = {</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;            <span class="stringliteral">&#39;pojo&#39;</span>: self,</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;            <span class="stringliteral">&#39;func&#39;</span>: self.operation.__update__,</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;            <span class="stringliteral">&#39;__task_uuid__&#39;</span>: name,</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;            <span class="stringliteral">&#39;t_local&#39;</span>: self,</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;            <span class="stringliteral">&#39;key&#39;</span>: key</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        }</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        <span class="comment"># 开启任务</span></div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> = self.operation.<a class="code" href="namespaceaestate.html#a134bbbf29caacb0c7c996840cf7a0730">start</a>(**kwargs)</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a></div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160; </div>
<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#acc24119ecb4a0a7eebb54faf1dc81632">  315</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#acc24119ecb4a0a7eebb54faf1dc81632">remove</a>(self, key=None):</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="stringliteral">        执行更新操作:</span></div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;<span class="stringliteral">            返回受影响行数</span></div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;<span class="stringliteral">        :param key:主键，where的参考数据</span></div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;<span class="stringliteral">        :return:</span></div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        <span class="keywordflow">if</span> key <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;            <span class="keywordflow">for</span> k, v <span class="keywordflow">in</span> self._fields.items():</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;                <span class="keywordflow">if</span> hasattr(v, <span class="stringliteral">&quot;primary_key&quot;</span>) <span class="keywordflow">and</span> getattr(v, <span class="stringliteral">&#39;primary_key&#39;</span>):</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;                    key = k</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;                    <span class="keywordflow">break</span></div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;        name = str(uuid.uuid1())</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;        kwargs = {</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;            <span class="stringliteral">&#39;pojo&#39;</span>: self,</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;            <span class="stringliteral">&#39;func&#39;</span>: self.operation.__remove__,</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;            <span class="stringliteral">&#39;__task_uuid__&#39;</span>: name,</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;            <span class="stringliteral">&#39;t_local&#39;</span>: self,</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;            <span class="stringliteral">&#39;key&#39;</span>: key</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        }</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        <span class="comment"># 开启任务</span></div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;        self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> = self.operation.<a class="code" href="namespaceaestate.html#a134bbbf29caacb0c7c996840cf7a0730">start</a>(**kwargs)</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a></div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160; </div>
<div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a5e48e6c99c9c38c5280bf4d7e6a949ed">  340</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a5e48e6c99c9c38c5280bf4d7e6a949ed">save</a>(self, *args, **kwargs):</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="stringliteral">        将当前储存的值存入数据库</span></div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;        kwargs[<span class="stringliteral">&#39;pojo&#39;</span>] = self</div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#aedb01a6a9d72679a9560b7ca97e93a67">create</a>(*args, **kwargs)</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160; </div>
<div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#aedb01a6a9d72679a9560b7ca97e93a67">  347</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#aedb01a6a9d72679a9560b7ca97e93a67">create</a>(self, pojo, **kwargs):</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;<span class="stringliteral">        插入属性:</span></div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;<span class="stringliteral">            返回受影响行数</span></div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;<span class="stringliteral">        :param kwargs:包含所有参数:</span></div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;<span class="stringliteral">            pojo:参照对象</span></div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;<span class="stringliteral">            last_id:是否需要返回最后一行数据,默认False</span></div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;<span class="stringliteral">        :return:rowcount,last_id if last_id=True</span></div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;        <span class="comment"># 设置名称</span></div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        kwargs[<span class="stringliteral">&#39;pojo&#39;</span>] = pojo</div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;        name = str(uuid.uuid1())</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        <span class="comment"># 开启任务</span></div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        kwargs[<span class="stringliteral">&#39;func&#39;</span>] = self.operation.__insert__</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;        kwargs[<span class="stringliteral">&#39;__task_uuid__&#39;</span>] = name</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;        kwargs[<span class="stringliteral">&#39;t_local&#39;</span>] = self</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;        self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> = self.operation.<a class="code" href="namespaceaestate.html#a134bbbf29caacb0c7c996840cf7a0730">start</a>(**kwargs)</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;        <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a></div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160; </div>
<div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a6fb8096830e2df1bed24cd94f5f4919b">  366</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a6fb8096830e2df1bed24cd94f5f4919b">copy</a>(self, **kwargs):</div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;<span class="stringliteral">        复制对象进行操做</span></div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="stringliteral">        不建议多次创建对象，建议使用 pojo.copy()来生成对象</span></div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;        obj = copy.copy(self)</div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;        [setattr(obj, k, v) <span class="keywordflow">for</span> k, v <span class="keywordflow">in</span> kwargs.items()]</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;        <span class="keywordflow">return</span> obj</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160; </div>
<div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a4502a56b17fa50cecefeec9b5c69afab">  376</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a4502a56b17fa50cecefeec9b5c69afab">execute_sql</a>(self, sql, params=None, mode=EX_MODEL.SELECT, **kwargs):</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;<span class="stringliteral">        :param sql:执行的sql</span></div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;<span class="stringliteral">        :param params:防止sql注入的参数</span></div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="stringliteral">        :param mode:查询模式,默认使用SELECT,使用aestate.work.Modes.EX_MODEL枚举修改执行的sql类型</span></div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;<span class="stringliteral">        :param kwargs:其他需要的参数</span></div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;        kwargs[<span class="stringliteral">&#39;print_sql&#39;</span>] = <span class="keyword">True</span> <span class="keywordflow">if</span> <span class="stringliteral">&#39;print_sql&#39;</span> <span class="keywordflow">not</span> <span class="keywordflow">in</span> kwargs.keys() <span class="keywordflow">else</span> kwargs[<span class="stringliteral">&#39;print_sql&#39;</span>]</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        <span class="keywordflow">if</span> mode <span class="keywordflow">is</span> <span class="keywordtype">None</span> <span class="keywordflow">or</span> mode == EX_MODEL.SELECT:</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;            <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a4fe8925d2fe118234b92067560e96a2c">db_util</a>.select(sql=sql, params=params, **kwargs)</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;            kwargs[<span class="stringliteral">&#39;last_id&#39;</span>] = <span class="keyword">True</span> <span class="keywordflow">if</span> <span class="stringliteral">&#39;last_id&#39;</span> <span class="keywordflow">not</span> <span class="keywordflow">in</span> kwargs.keys() <span class="keywordflow">else</span> kwargs[<span class="stringliteral">&#39;last_id&#39;</span>]</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;            <span class="keywordflow">return</span> self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a4fe8925d2fe118234b92067560e96a2c">db_util</a>.insert(sql=sql, params=params, **kwargs)</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160; </div>
<div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#a547fcd05dbc50a7544d307e6b407e596">  390</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#a547fcd05dbc50a7544d307e6b407e596">foreign_key</a>(self, cls, key_name, field_name=None, data=None, operation=None):</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;<span class="stringliteral">        根据外键来查</span></div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;<span class="stringliteral">        Examples:</span></div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;<span class="stringliteral">            第一种：</span></div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; from apps.fontend.models import  Label, SmLabel</span></div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; smlabel = SmLabel()</span></div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; label = Label()</span></div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; label.find_all()</span></div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; label.foreign_key(smlabel.copy, &#39;label_id&#39;)</span></div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; datas = label.datas</span></div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;<span class="stringliteral">            第二种：</span></div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; page = int(requests.GET[&#39;page&#39;]) \</span></div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;<span class="stringliteral">            ...         if &#39;page&#39; in requests.GET.keys() \</span></div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="stringliteral">            ...         else 1</span></div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="stringliteral">            ...</span></div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; sm_label_list = sm_label.orm.filter(id=pk)</span></div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; sm_label.foreign_key(</span></div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;<span class="stringliteral">            ...    cls=need.copy,</span></div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;<span class="stringliteral">            ...    key_name=&#39;label_id&#39;,</span></div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;<span class="stringliteral">            ...    field_name=&quot;need_list&quot;,</span></div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<span class="stringliteral">            ...    datas=sm_label_list,</span></div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;<span class="stringliteral">            ...    operation=lambda dt, i: need.orm</span></div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;<span class="stringliteral">            ...        .find()</span></div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="stringliteral">            ...        .where(label_id=dt[i].id)</span></div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;<span class="stringliteral">            ...        .limit((page - 1) * PAGE_SIZE, PAGE_SIZE)</span></div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;<span class="stringliteral">            ...        .end()</span></div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;<span class="stringliteral">            ...)</span></div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; need_list = sm_label.datas</span></div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;<span class="stringliteral">            &gt;&gt;&gt; return Result.success(data=need_list.to_dict())</span></div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;<span class="stringliteral">        :param cls:目标外键的类，注意不是对象，是类</span></div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;<span class="stringliteral">        :param key_name:外键的id</span></div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<span class="stringliteral">        :param field_name:保存进去的字段名字，默认以表名命名</span></div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="stringliteral">        :param data:使用已有的数据作为外键</span></div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;<span class="stringliteral">        :param operation:自定义操作</span></div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;        child_obj = cls()</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;        <span class="keywordflow">if</span> field_name <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;            name = child_obj.get_tb_name()</div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;            name = field_name</div>
<div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad7eae41f8776e1aff71d662b66cc57da">  437</a></span>&#160;        self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad7eae41f8776e1aff71d662b66cc57da">datas</a> = self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">result</a> <span class="keywordflow">if</span> data <span class="keywordflow">is</span> <span class="keywordtype">None</span> <span class="keywordflow">else</span> data</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        <span class="keywordflow">for</span> i <span class="keywordflow">in</span> range(len(self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad7eae41f8776e1aff71d662b66cc57da">datas</a>)):</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;            <span class="keywordflow">if</span> <span class="keywordflow">not</span> operation:</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;                data = child_obj.orm.filter(**{key_name: self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad7eae41f8776e1aff71d662b66cc57da">datas</a>[i].id})</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;            <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;                data = operation(self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad7eae41f8776e1aff71d662b66cc57da">datas</a>, i)</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;            self.<a class="code" href="classaestate_1_1work_1_1repository_1_1_repository.html#ad7eae41f8776e1aff71d662b66cc57da">datas</a>[i].add_field(name, data.to_dict())</div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a4502a56b17fa50cecefeec9b5c69afab"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a4502a56b17fa50cecefeec9b5c69afab">aestate.work.repository.Repository.execute_sql</a></div><div class="ttdeci">def execute_sql(self, sql, params=None, mode=EX_MODEL.SELECT, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00376">repository.py:376</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_acc24119ecb4a0a7eebb54faf1dc81632"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#acc24119ecb4a0a7eebb54faf1dc81632">aestate.work.repository.Repository.remove</a></div><div class="ttdeci">def remove(self, key=None)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00315">repository.py:315</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a3424c501b017a48c7ccfc1f31d8dee1d"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a3424c501b017a48c7ccfc1f31d8dee1d">aestate.work.repository.Repository.find_all</a></div><div class="ttdeci">QuerySet find_all(self, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00154">repository.py:154</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html">aestate.work.repository.Repository</a></div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00016">repository.py:16</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a547fcd05dbc50a7544d307e6b407e596"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a547fcd05dbc50a7544d307e6b407e596">aestate.work.repository.Repository.foreign_key</a></div><div class="ttdeci">def foreign_key(self, cls, key_name, field_name=None, data=None, operation=None)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00390">repository.py:390</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1work_1_1orm_html"><div class="ttname"><a href="namespaceaestate_1_1work_1_1orm.html">aestate.work.orm</a></div><div class="ttdef"><b>Definition:</b> <a href="orm_8py_source.html#l00001">orm.py:1</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a0087bc5f425b10dddd4f8a27f98bd6dc"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a0087bc5f425b10dddd4f8a27f98bd6dc">aestate.work.repository.Repository.find_sql</a></div><div class="ttdeci">QuerySet find_sql(self, sql, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00263">repository.py:263</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_ad7eae41f8776e1aff71d662b66cc57da"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#ad7eae41f8776e1aff71d662b66cc57da">aestate.work.repository.Repository.datas</a></div><div class="ttdeci">datas</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00437">repository.py:437</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a5e48e6c99c9c38c5280bf4d7e6a949ed"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a5e48e6c99c9c38c5280bf4d7e6a949ed">aestate.work.repository.Repository.save</a></div><div class="ttdeci">def save(self, *args, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00340">repository.py:340</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a9de20f0ad54da7c1b6ab8bc7e3f28ec2"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a9de20f0ad54da7c1b6ab8bc7e3f28ec2">aestate.work.repository.Repository.find_one</a></div><div class="ttdeci">def find_one(self, sql, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00195">repository.py:195</a></div></div>
<div class="ttc" id="anamespaceaestate_html_a134bbbf29caacb0c7c996840cf7a0730"><div class="ttname"><a href="namespaceaestate.html#a134bbbf29caacb0c7c996840cf7a0730">aestate.start</a></div><div class="ttdeci">def start()</div><div class="ttdef"><b>Definition:</b> <a href="____init_____8py_source.html#l00008">__init__.py:8</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_ad6ade0a364a6d26b9217c64afe2cf135"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#ad6ade0a364a6d26b9217c64afe2cf135">aestate.work.repository.Repository.ParseUtil</a></div><div class="ttdeci">ParseUtil</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00083">repository.py:83</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1work_1_1_serialize_html"><div class="ttname"><a href="namespaceaestate_1_1work_1_1_serialize.html">aestate.work.Serialize</a></div><div class="ttdef"><b>Definition:</b> <a href="_serialize_8py_source.html#l00001">Serialize.py:1</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_aedb01a6a9d72679a9560b7ca97e93a67"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#aedb01a6a9d72679a9560b7ca97e93a67">aestate.work.repository.Repository.create</a></div><div class="ttdeci">def create(self, pojo, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00347">repository.py:347</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1util_1_1_log_html"><div class="ttname"><a href="namespaceaestate_1_1util_1_1_log.html">aestate.util.Log</a></div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00001">Log.py:1</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1work_1_1_modes_html"><div class="ttname"><a href="namespaceaestate_1_1work_1_1_modes.html">aestate.work.Modes</a></div><div class="ttdef"><b>Definition:</b> <a href="_modes_8py_source.html#l00001">Modes.py:1</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1exception_html"><div class="ttname"><a href="namespaceaestate_1_1exception.html">aestate.exception</a></div><div class="ttdef"><b>Definition:</b> <a href="exception_2____init_____8py_source.html#l00001">__init__.py:1</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_ab269e249ed16a1b870cfab7825a94727"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#ab269e249ed16a1b870cfab7825a94727">aestate.work.repository.Repository.result</a></div><div class="ttdeci">result</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00162">repository.py:162</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a7b0fadba8d270423923ecedb012565c9"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a7b0fadba8d270423923ecedb012565c9">aestate.work.repository.Repository.last</a></div><div class="ttdeci">def last(self)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00148">repository.py:148</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_ad66c073ae1c84d39f2868e43c43bc189"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#ad66c073ae1c84d39f2868e43c43bc189">aestate.work.repository.Repository.__init__</a></div><div class="ttdeci">def __init__(self, config_obj=None, instance=None, log_conf=None, close_log=False, serializer=QuerySet, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00023">repository.py:23</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1dbs_html"><div class="ttname"><a href="namespaceaestate_1_1dbs.html">aestate.dbs</a></div><div class="ttdef"><b>Definition:</b> <a href="dbs_2____init_____8py_source.html#l00001">__init__.py:1</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1work_1_1sql_html"><div class="ttname"><a href="namespaceaestate_1_1work_1_1sql.html">aestate.work.sql</a></div><div class="ttdef"><b>Definition:</b> <a href="work_2sql_2____init_____8py_source.html#l00001">__init__.py:1</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a8c81f4cc1f19e32a669a66adb72cc388"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a8c81f4cc1f19e32a669a66adb72cc388">aestate.work.repository.Repository.find_field</a></div><div class="ttdeci">QuerySet find_field(self, *args, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00165">repository.py:165</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a4fe8925d2fe118234b92067560e96a2c"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a4fe8925d2fe118234b92067560e96a2c">aestate.work.repository.Repository.db_util</a></div><div class="ttdeci">db_util</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00123">repository.py:123</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a6fb8096830e2df1bed24cd94f5f4919b"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a6fb8096830e2df1bed24cd94f5f4919b">aestate.work.repository.Repository.copy</a></div><div class="ttdeci">def copy(self, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00366">repository.py:366</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a23a9cc8dca79ab503ab2537c8d29e975"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a23a9cc8dca79ab503ab2537c8d29e975">aestate.work.repository.Repository.conversion</a></div><div class="ttdeci">def conversion(self)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00133">repository.py:133</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1orm_1_1_a_orm_html"><div class="ttname"><a href="classaestate_1_1work_1_1orm_1_1_a_orm.html">aestate.work.orm.AOrm</a></div><div class="ttdef"><b>Definition:</b> <a href="orm_8py_source.html#l00067">orm.py:67</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a6451c2ce3e3119f33943bd802aa738a4"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a6451c2ce3e3119f33943bd802aa738a4">aestate.work.repository.Repository.update</a></div><div class="ttdeci">def update(self, key=None)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00290">repository.py:290</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_a9a3ea0e3484460a8dc08a43f54e9a809"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#a9a3ea0e3484460a8dc08a43f54e9a809">aestate.work.repository.Repository.first</a></div><div class="ttdeci">def first(self)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00142">repository.py:142</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1repository_1_1_repository_html_ac4957e544a6e7b5fce766d015395823c"><div class="ttname"><a href="classaestate_1_1work_1_1repository_1_1_repository.html#ac4957e544a6e7b5fce766d015395823c">aestate.work.repository.Repository.find_many</a></div><div class="ttdeci">QuerySet find_many(self, sql, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="repository_8py_source.html#l00232">repository.py:232</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html">aestate.util.Log.ALog</a></div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00122">Log.py:122</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>
